package com.pxene.dmp.common;

import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Properties;

import com.pxene.dmp.job.JobManager;


public class PropertiesUtils {
	Properties prop = new Properties();

	/* 写入配置文件,task为每个任务的任务名称，index为集群挂掉之前最后一次写入的index值
	 * 如果该主键已经存在，更新该主键的值；  
     * 如果该主键不存在，则插件一对键值
     * task：键名
     * index：键值
	 */
	public void writeToProperties(String task, String index) {
		FileOutputStream oFile = null;
		try {
			String filePath = JobManager.class.getClassLoader().getResource("index.properties").getPath();
			oFile = new FileOutputStream(filePath);  //相同的覆盖，不同的追加
			prop.setProperty(task, index);
			prop.store(oFile, "The properties file");

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (oFile != null) {
					oFile.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	
	//读取配置文件，task为每个任务的任务名称，根据每个任务读取相应的index值。
	public String readProperties(String task) {
		InputStream in = null;
		try {
			in = new BufferedInputStream(
					JobManager.class.getResourceAsStream("/index.properties"));
			prop.load(in);  //加载属性列表
			Iterator<String> it = prop.stringPropertyNames().iterator();
			String value = null;
			while (it.hasNext()) {
				String key = it.next();
				value = prop.getProperty(key);
				if(task.equals(key)) break;
//				System.out.println(key + ":" + value);
			}
			return value;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}
}
